const joi = require("joi")
// 引入验证的校验模块
/**
 * string() 值必须是字符串
 * alphanum() 值只能是包含 a-zA-Z0-9 的字符串
 * min(length) 最小长度
 * max(length) 最大长度
 * required() 值是必填项，不能为 undefined
 * pattern(正则表达式) 值必须符合正则表达式的规则
 */

// 用户名的验证规则
const username = joi.string().alphanum().min(1).max(10).required() // 定义规则

// 密码的校验规则
const password = joi
  .string()
  .pattern(/^[\S]{6,12}$/)
  .required()

// 定义 id, nickname, emial 的验证规则
const id = joi.number().integer().min(1).required()
const nickname = joi.string().required()
const email = joi.string().email().required()

const avatar = joi.string().dataUri().required() // 必填 字符串类型 base64的格式
exports.reg_login_schema = {
  // 表示需要对 req.body 中的数据进行验证
  // 因为校验规则是应用在 req.body上
  body: {
    username,
    password,
  },
}
// 定义三个字段的校验规则
exports.update_user_schema = {
  body: {
    id,
    nickname,
    email,
  },
}

exports.update_pwd_schema = {
  body: {
    oldPwd: password, // 旧密码验证的是 6-16位的非空格
    newPwd: joi.not(joi.ref("oldPwd")).concat(password), // joi提供的api方法 直接套用即可
    // newPwd不能和 oldPwd相等  还需要根据密码规则进行校验
  },
}

exports.update_avatar_schema = {
  body: {
    avatar,
  },
}
